package models

// 获取所有栏目
func GetAllColumns()([]Column, error){
	var res []Column
	if err := db.Find(&res).Error; err != nil{
		return nil, err
	}
	for i := range res{
		err := db.Model(new(Article)).Select("count(*)").Where("column_id = ?", res[i].Id).Find(&res[i].Nums).Error
		if err != nil{
			return nil, err
		}
	}
	return res, nil
}

// 获取栏目
func GetColumn(column Column)(Column, error){
	if err := db.Find(&column).Error; err != nil{
		return column, err
	}
	err := db.Model(new(Article)).Select("count(*)").Where("column_id = ?", column.Id).Find(&column.Nums).Error
	if err != nil{
		return column, err
	}
	return column, nil
}

// 删除栏目
func DeleteColumn(column Column)(Column, error){
	err := db.Delete(&column).Error
	return column, err
}

// 删除多个栏目
func DeleteColumns(columns []Column)([]Column, error){
	t := db.Begin()
	for i := range columns{
		if err := t.Delete(&columns[i]).Error; err != nil{
			t.Callback()
			return nil, err
		}
	}
	if err := t.Commit().Error; err != nil{
		t.Callback()
		return nil, err
	}
	return columns, nil
}

// 保存专栏
func SaveColumn(column Column)(Column, error){
	err := db.Save(&column).Error
	return column, err
}

// 专栏
type Column struct {
	Id uint `gorm:"primarykey" json:"id"`
	Name string `gorm:"not null;unique" json:"name"`
	Nums uint `gorm:"-" json:"nums"`
}